Use case: I2C master transmit/receive in interrupt mode

This use case shows how to perform master transmit and master receive operations using interrupts.

Sequence diagram

@startuml
  participant "User Application" as App
  participant "HAL I2C" as HAL_I2C

  == Master Transmit IT ==
  App -> HAL_I2C: HAL_I2C_Master_Transmit_IT(&hi2c2, 0x30F, aTxBuffer, TXBUFFERSIZE)

  == Master Receive IT ==
  App -> HAL_I2C: HAL_I2C_Master_Receive_IT(&hi2c2, I2C_ADDRESS, aRxBuffer, RXBUFFERSIZE)

  @enduml

Code snippet

HAL1

HAL2

#define I2C_ADDRESS          0x30F;

HAL_I2C_Master_Transmit_IT(&hi2c2, 0x30F, aTxBuffer, TXBUFFERSIZE);

HAL_I2C_Master_Receive_IT(&hi2c2, I2C_ADDRESS, aRxBuffer, RXBUFFERSIZE);
uint16_t NumData = 0;

HAL_I2C_MASTER_Transmit_IT(&hi2cx, I2C_SlaveAddress[Adr_Idx], TxBuffer, 0);

HAL_I2C_MASTER_Receive_IT(&hi2cx, I2C_SlaveAddress[Adr_Idx], RxBuffer, 0);

Key changes

  1. HAL2 uses renamed I2C interrupt APIs (for example, HAL_I2C_MASTER_Transmit_IT() instead of HAL_I2C_Master_Transmit_IT()).